8965. Начальные значения элементов

 

Каждому элементу массива из n целых чисел добавлен его наименьший элемент. Полученные значения подаются на вход программы в том же порядке. Необходимо восстановить исходные значения элементов массива.

 

Вход. Первая строка содержит натуральное число n (n ≤ 100). Во второй строке записаны n целых чисел. Все числа по модулю не превышают 100.

 

Выход. Выведите в одной строке исходные значения элементов массива.

 

Пример входа

Пример выхода

7

1 7 -1 -4 2 1 2

3 9 1 -2 4 3 4

 

 

РЕШЕНИЕ

массив

 

Анализ алгоритма

Пусть xнаименьший элемент исходного массива (который следует вывести). После того как к каждому элементу массива будет добавлено значение x, наименьшим элементом полученного массива станет число 2x.

Для восстановления начальных значений ищем наименьший элемент min в исходном массиве. Мы знаем, что min = 2x. Чтобы найти x, делим min на 2: add = min / 2​. Значение add было добавлено ко всем элементам начального массива. Следовательно, чтобы восстановить исходные значения, из каждого элемента входного массива следует вычесть add.

 

Пример

В приведенном примере наименьшим элементом будет min = -4. Разделим его пополам: add = min / 2 = -2. Теперь вычитаем -2 из каждого элемента входного массива.

 

Реализация алгоритма

Объявим рабочий массив.

 

int m[101];

 

Читаем входной массив. Находим в нем наименьший элемент min.

 

scanf("%d", &n);

min = 100;

for (i = 0; i < n; i++)

{

   scanf("%d", &m[i]);

   if (m[i] < min) min = m[i];

}

 

Делим наименьший элемент пополам – это значение было прибавлено ко всем элементам начального массива.

 

add = min / 2;

 

Из каждого элемента входного массива вычитаем найденное значение add. Одновременно выводим восстановленный (начальный) массив.

 

for (i = 0; i < n; i++)

{

  m[i] -= add;

  printf("%d ", m[i]);

}

printf("\n");

 

Python реализация

Читаем входные данные.

 

n = int(input())

lst = list(map(int,input().split()))

 

Находим значение add, которое было прибавлено ко всем элементам начального списка.

 

add = min(lst) // 2

 

Вычитаем значение add из каждого элемента списка lst.

 

res = [x - add for x in lst]

 

Выводим восстановленный (начальный) массив.

 

print (*res)